package com.lzy.utils;

import com.lzy.exception.UtilException;

/**
 * @author lyw
 * @Date 2023/2/8-下午5:36
 */
public class SqlUtil {

  /**
   * 仅支持字母、数字、下划线、空格、逗号、小数点（支持多个字段排序）
   */
  public static final String SQL_PATTERN = "[a-zA-Z0-9\\ \\,\\.]+";

  private SqlUtil () {}

  /**
   * 检查字符，防止注入绕过
   */
  public static String escapeOrderBySql(String value) {
    if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value))
    {
      throw new UtilException("参数不符合规范，不能进行查询");
    }
    return value;
  }

  /**
   * 验证 order by 语法是否符合规范
   */
  private static boolean isValidOrderBySql(String value) {
    return value.matches(SQL_PATTERN);
  }
}
